home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / Snippets / Printing / PicCommentsTest / TN91TestCode.p < prev    next >
Encoding:
Text File  |  1992-06-11  |  7.0 KB  |  315 lines  |  [TEXT/PJMM]

  1. program TN91TestCode;
  2.     uses
  3.         PrintTraps, PicComments, Globals, TestPicComments;
  4.  
  5.  
  6.     procedure DrawContents (frame: Rect; p: GrafPtr);
  7.         var
  8.             savePort: GrafPtr;
  9.             s: Str255;
  10.     begin  {DrawContents}
  11.         GetPort(savePort);
  12.         SetPort(p);
  13.         case gWhichDemo of
  14.             iNone: 
  15.                 begin
  16.                     TextFont(applFont);
  17.                     TextSize(12);
  18.                     TextFace([]);
  19.                     GetIndString(s, rStrings, iSuggestSelection);
  20.                     MoveTo(30, 30);
  21.                     DrawString(s);
  22.                 end;
  23.             iTextRotation: 
  24.                 TextRotationDemo;
  25.             iLineLayout: 
  26.                 LineLayoutDemo;
  27.             iPolygon: 
  28.                 PolygonDemo(gFilled, gClosed);
  29.             iDashedLine: 
  30.                 DashDemo;
  31.             iLineWidth: 
  32.                 LineWidthDemo;
  33.             iGraphicsRot: 
  34.                 GraphRotDemo;
  35.             iPostScript: 
  36.                 PostScriptComments;
  37.         end;
  38.         SetPort(savePort);
  39.     end; {DrawContents}
  40.  
  41.  
  42.     procedure DoPageSetup;
  43.     begin
  44.         PrOpen;
  45.         if PrStlDialog(gPrRec) then
  46.             ; { nothing }
  47.         PrClose;
  48.     end; { DoPageSetup }
  49.  
  50.  
  51.     procedure PrintTestPage;
  52.         var
  53.             theStatus: TPrStatus;
  54.             goPrinting: Boolean;
  55.     begin
  56.         PrOpen;
  57.         goPrinting := TRUE;
  58.         if PrValidate(gPrRec) then
  59.             goPrinting := PrStlDialog(gPrRec);
  60.         if goPrinting & PrJobDialog(gPrRec) then
  61.             begin
  62.                 DrawContents(gWP^.portRect, gWP);
  63.                 gPrPort := PrOpenDoc(gPrRec, gPrPort, nil);
  64.                 if PrError = noErr then
  65.                     begin
  66.                         PrOpenPage(gPrPort, nil);
  67.                         if PrError = noErr then
  68.                             DrawContents(gPrRec^^.prInfo.rPage, @gPrPort^.gPort);
  69.                         PrClosePage(gPrPort);
  70.                     end;
  71.                 PrCloseDoc(gPrPort);
  72.                 if (gPrRec^^.prJob.bJDocLoop = bSpoolLoop) and (PrError = noErr) then
  73.                     PrPicFile(gPrRec, nil, nil, nil, theStatus);
  74.             end;
  75.         PrClose;
  76.     end; { PrintTestPage }
  77.  
  78.  
  79.     procedure MyItem (dlg: DialogPtr; itemNo: Integer);  { frame OK button }
  80.         var
  81.             itemType: Integer;
  82.             itemHandle: Handle;
  83.             itemRect: Rect;
  84.     begin
  85.         GetDItem(dlg, itemNo, itemType, itemHandle, itemRect);
  86.         PenSize(3, 3);
  87.         InsetRect(itemRect, -4, -4);
  88.         FrameRoundRect(itemRect, 16, 16);
  89.         PenSize(1, 1);
  90.     end;  { MyItem }
  91.  
  92.  
  93.     function MyFilter (dlg: DialogPtr; var event: EventRecord; var itemHit: Integer): Boolean;
  94. { intercept return, enter and escape keys in modal dialog }
  95.         var
  96.             key: Char;
  97.             itemRect: Rect;
  98.             itemType: Integer;
  99.             itemHandle: Handle;
  100.             ticks: Longint;
  101.             state: Integer;
  102.  
  103.         procedure ButtonFeedBack;
  104.         begin
  105.             GetDItem(dlg, itemHit, itemType, itemHandle, itemRect);
  106.             HiliteControl(ControlHandle(itemHandle), 1);
  107.             Delay(8, ticks);
  108.             HiliteControl(ControlHandle(itemHandle), 0);
  109.         end;
  110.  
  111.     begin
  112.         MyFilter := false;
  113.         case event.what of
  114.             keyDown, autoKey: 
  115.                 begin
  116.                     key := chr(BitAnd(event.message, charCodeMask));
  117.                     if (ord(key) = 13) | (ord(key) = 3) then
  118.                         begin
  119.                             itemHit := ok;
  120.                             ButtonFeedBack;
  121.                             MyFilter := true;
  122.                         end
  123.                     else if ord(key) = 27 then
  124.                         begin
  125.                             itemHit := cancel;
  126.                             ButtonFeedBack;
  127.                             MyFilter := true;
  128.                         end;
  129.                 end;
  130.         end; {case}
  131.     end;  {MyFilter}
  132.  
  133.  
  134.     procedure UpdateCheckBoxes (dlg: DialogPtr);  { in PolygonSmoothing dlg }
  135.         var
  136.             itemRect: Rect;
  137.             itemType: Integer;
  138.             itemHandle: Handle;
  139.     begin
  140.         GetDItem(dlg, iFilled, itemType, itemHandle, itemRect);
  141.         SetCtlValue(ControlHandle(itemHandle), ord(gFilled));
  142.         GetDItem(dlg, iClosed, itemType, itemHandle, itemRect);
  143.         SetCtlValue(ControlHandle(itemHandle), ord(gClosed));
  144.     end;
  145.  
  146.  
  147.     procedure UpdateRadioButtons (dlg: DialogPtr); { in TextRotation dlg }
  148.         var
  149.             i: Integer;
  150.             itemRect: Rect;
  151.             itemType: Integer;
  152.             itemHandle: Handle;
  153.     begin
  154.         for i := iJNone to iJFull do
  155.             begin
  156.                 GetDItem(dlg, i, itemType, itemHandle, itemRect);
  157.                 SetCtlValue(ControlHandle(itemHandle), ord(gJus = (i - iJNone)));
  158.             end;
  159.         for i := iFNone to iFVertic do
  160.             begin
  161.                 GetDItem(dlg, i, itemType, itemHandle, itemRect);
  162.                 SetCtlValue(ControlHandle(itemHandle), ord(gFlip = (i - iFNone)));
  163.             end;
  164.     end;
  165.  
  166.  
  167.     procedure DoDemo (whichDemo: Integer);
  168.         var
  169.             dlg: DialogPtr;
  170.             savePort: GrafPtr;
  171.             itemHit: Integer;
  172.             itemRect: Rect;
  173.             itemType: Integer;
  174.             itemHandle: Handle;
  175.             s: Str255;
  176.     begin
  177.         GetPort(savePort);
  178.         itemHit := ok;
  179.         case whichDemo of
  180.             iTextRotation: 
  181.                 begin
  182.                     dlg := GetNewDialog(rTxtPicOptions, nil, WindowPtr(-1));
  183.                     if dlg = nil then
  184.                         DebugStr('GetNewDialog failed');
  185.                     SetPort(GrafPtr(dlg));
  186.                     GetDItem(dlg, iOKUser, itemType, itemHandle, itemRect);
  187.                     SetDItem(dlg, iOKUser, itemType, @MyItem, itemRect);
  188.                     repeat
  189.                         UpdateRadioButtons(dlg);
  190.                         ModalDialog(@MyFilter, itemHit);
  191.                         case itemHit of
  192.                             iJNone: 
  193.                                 gJus := tJusNone;
  194.                             iJLeft: 
  195.                                 gJus := tJusLeft;
  196.                             iJCenter: 
  197.                                 gJus := tJusCenter;
  198.                             iJRight: 
  199.                                 gJus := tJusRight;
  200.                             iJFull: 
  201.                                 gJus := tJusFull;
  202.                             iFNone: 
  203.                                 gFlip := tFlipNone;
  204.                             iFHoriz: 
  205.                                 gFlip := tFlipHorizontal;
  206.                             iFVertic: 
  207.                                 gFlip := tFlipVertical;
  208.                         end;
  209.                     until itemHit in [ok, cancel];
  210.                     DisposDialog(dlg);
  211.                 end;
  212.             iPolygon: 
  213.                 begin
  214.                     dlg := GetNewDialog(rPolyOptions, nil, WindowPtr(-1));
  215.                     if dlg = nil then
  216.                         DebugStr('GetNewDialog failed');
  217.                     SetPort(GrafPtr(dlg));
  218.                     GetDItem(dlg, iUser, itemType, itemHandle, itemRect);
  219.                     SetDItem(dlg, iUser, itemType, @MyItem, itemRect);
  220.                     repeat
  221.                         UpdateCheckBoxes(dlg);
  222.                         ModalDialog(@MyFilter, itemHit);
  223.                         if itemHit = iFilled then
  224.                             gFilled := not gFilled;
  225.                         if itemHit = iClosed then
  226.                             gClosed := not gClosed;
  227.                     until itemHit in [ok, cancel];
  228.                     DisposDialog(dlg);
  229.                 end;
  230.         end;
  231.         if itemHit = cancel then
  232.             exit(DoDemo);
  233.         gWhichDemo := whichDemo;
  234.         GetItem(GetMHandle(mSelect), gWhichDemo, s);
  235.         SetWTitle(gWP, s);
  236.         SetPort(gWP);
  237.         EraseRect(gWP^.portRect);
  238.         InvalRect(gWP^.portRect);
  239.         SetPort(savePort);
  240.     end;
  241.  
  242.  
  243.     procedure DoMenuCommand (menuResult: Longint);
  244.         var
  245.             menuID, menuItem: Integer;
  246.             daRefNum, itemHit: Integer;
  247.             s: Str255;
  248.     begin
  249.         menuID := HiWrd(menuResult);
  250.         menuItem := LoWrd(menuResult);
  251.         case menuID of
  252.             mApple: 
  253.                 if menuItem = iAbout then
  254.                     itemHit := Alert(rAboutAlert, nil)
  255.                 else
  256.                     begin
  257.                         GetItem(GetMHandle(mApple), menuItem, s);
  258.                         daRefNum := OpenDeskAcc(s);
  259.                     end;
  260.             mFile: 
  261.                 case menuItem of
  262.                     iPageSetup: 
  263.                         DoPageSetup;
  264.                     iPrint: 
  265.                         PrintTestPage;
  266.                     iQuit: 
  267.                         gDone := TRUE;
  268.                 end;
  269.             mSelect: 
  270.                 DoDemo(menuItem);
  271.         end;
  272.         HiliteMenu(0);
  273.     end;    { DoMenuCommand }
  274.  
  275.  
  276.     procedure EventLoop;
  277.         var
  278.             evt: EventRecord;
  279.             wnd: WindowPtr;
  280.     begin
  281.         repeat
  282.             if WaitNextEvent(everyEvent, evt, 60, nil) then
  283.                 case evt.what of
  284.                     mouseDown: 
  285.                         begin
  286.                             case FindWindow(evt.where, wnd) of
  287.                                 inMenuBar: 
  288.                                     DoMenuCommand(MenuSelect(evt.where));
  289.                                 inSysWindow: 
  290.                                     SystemClick(evt, wnd);
  291.                                 inGoAway: 
  292.                                     gDone := TRUE;
  293.                                 inDrag: 
  294.                                     DragWindow(wnd, evt.where, screenBits.bounds);
  295.                             end;
  296.                         end;
  297.                     keyDown: 
  298.                         if BAnd(evt.modifiers, cmdKey) <> 0 then
  299.                             DoMenuCommand(MenuKey(CHR(BAnd(evt.message, charCodeMask))));
  300.                     updateEvt: 
  301.                         begin
  302.                             BeginUpdate(gWP);
  303.                             DrawContents(gWP^.portRect, gWP);
  304.                             EndUpdate(gWP);
  305.                         end;
  306.                 end;
  307.         until gDone;
  308.     end;    { EventLoop}
  309.  
  310.  
  311. begin { TN91TestCode}
  312.     InitMac;
  313.     InitApp;
  314.     EventLoop;
  315. end.    { TN91TestCode}